package com.lhkj.ct.meta.admin.model.vo;

import com.lhkj.ct.base.enums.GlobalStatus;
import com.lhkj.ct.base.model.IBaseTree;
import com.lhkj.ct.base.model.Tree;
import com.lhkj.ct.base.validator.group.ValGroups;
import com.lhkj.ct.meta.admin.common.enums.MenuType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * <p>
 *     菜单管理类
 * </p>
 */
@Setter
@Getter
public class MenuVo implements Tree<MenuVo>, IBaseTree<String>, Serializable  {

    /**
     * 主键
     */
    @ApiModelProperty("主键")
    private String id;

    /**
     * 父级id
     */
    @ApiModelProperty("父级id")
    private String parentId;

    /**
     * 菜单名称
     */
    @ApiModelProperty("菜单名称")
    private String name;

    /**
     * 菜单类型 1.目录 2.菜单 3.按钮 4.外链
     */
    @ApiModelProperty("菜单类型 1.目录 2.菜单 3.按钮 4.外链")
    private MenuType type;

    /**
     * 路由路径
     */
    @ApiModelProperty("路由路径")
    private String path;

    /**
     * 页面路径
     */
    @ApiModelProperty("页面路径（组件路径）")
    private String component;

    /**
     * 跳转路径
     */
    @ApiModelProperty("跳转路由")
    private String redirect;

    /**
     * 权限标识
     */
    @ApiModelProperty("权限标识")
    private String perm;

    /**
     * 是否隐藏
     */
    @ApiModelProperty(value = "是否隐藏", example = "0", notes = "0.启用 1.禁用")
    private GlobalStatus status;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    @NotNull(message = "请输入排序", groups = {ValGroups.Insert.class, ValGroups.Update.class})
    private Integer sort;


    @ApiModelProperty("菜单子级")
    private List<MenuVo> children;

}
